package cn.tedu.opencv.demo;

import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import org.opencv.highgui.HighGui;
import org.opencv.imgproc.Imgproc;

public class TestThings {
    public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        String inputImagePath = "C:\\Users\\white\\Desktop\\photos\\暗绿绣眼鸟 DSCN4897.JPG";
        File file = new File(inputImagePath);
        // 将file文件转化为Mat对象
        try {
            byte[] bytes = Files.readAllBytes(file.toPath());
            MatOfByte matOfByte = new MatOfByte(bytes);
            // 将byte数组转化为Mat对象
            Mat image = Imgcodecs.imdecode(matOfByte, Imgcodecs.IMREAD_COLOR);
            Imgproc.cvtColor(image, image, Imgproc.COLOR_BGR2GRAY);
            Mat dst = new Mat();
            // 二值化(超过127的变为255，小于127的变为0)
            Imgproc.threshold(image, dst, 127, 255, Imgproc.THRESH_BINARY);
            HighGui.imshow("dst", dst);
            HighGui.waitKey(0);
//            // 画直线
//            Imgproc.line(image, new Point(0,0), new Point(image.cols(), image.rows()), new Scalar(0, 0, 255), 10, 8, 0);
//            // 画圆
//            Imgproc.circle(image, new Point(image.cols()/2, image.rows()/2), 25, new Scalar(0, 255, 0), 10, 8, 0);
//            // 画矩形
//            Imgproc.rectangle(image, new Point(image.cols()/2, image.rows()/2), new Point(image.cols()/2+100, image.rows()/2+250), new Scalar(255, 0, 0), 10, 8, 0);
//            // 画椭圆
//            Imgproc.ellipse(image, new Point(image.cols()/2, image.rows()/2), new Size(100, 250), 0, 0, 360, new Scalar(0, 0, 255), 10, 8, 0);
//            // 显示图像
//            HighGui.imshow("image", image);
//            // 等待按键
//            HighGui.waitKey(0);
//            // 释放资源
//            image.release();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
